package com.mjf.scala.chapter06

/**
 * 特质自身类型
 * 1.实现了依赖注入的功能  _:TraitA3 =>
 * 2.要求混入该特质的同时要混入特质自身类型
 *
 * 所有的Java接口都可以当作特质被混入
 */
object Scala21_TestTrait {

}

class User(var name: String, var age: Int)

trait TraitA3 {
  def m1() = println("m1")
}

// 和数据库打交道，完成用户CRUD
trait UserDao {
  // 2.要求混入该特质的同时要混入特质自身类型
  _:TraitA3 =>
  // 向数据库的用户表插入一条数据
  def insert(user: User) : Unit = println("insert into data" + user.name)
}

class UserController {
  // 1.实现依赖注入的功能
  _:UserDao =>
  // 可以注入多个
//  _:UserDao with Exception =>
  def register(user: User): Unit = insert(user)
}

class MyClass21 extends UserDao with TraitA3 {

}